<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="react.js"></script>
  <script src="react-dom.js"></script>
  <script src="babel.min.js"></script>

</head>
<body>
<div id="root"></div>
<script type="text/babel">
  class MyState extends React.Component{
    constructor(){
      super();
      this.state={
        name:"访问者"
      };
    }
    //constructor是组件的构造函数，会在创建实例时自动调用。 ...args表示组件参数，super（...args）是es6规定的
    //写法。this.state对象用来存放内部状态，这里是定义初始状态

    handlechange(e){
      let name=e.target.value;
      this.setState({
        name:name
      });
      console.log(e.target);
    }
    //this.setState方法用来重置this.state，每次调用这个方法，就会引发组件的重新渲染。
    render(){
      return <div>
         <input type="text" onChange={this.handlechange.bind(this)}/>
        <p>您好，{this.state.name}</p>
      </div>
    }
  }
  //this.state.name表示读取this.state的name属性。每当输入框有变动，就会自动调用onChange指定的监听函数，
  //这里是this.handleChange，.bind(this)表示该方法内部的this，绑定当前组件。
  ReactDOM.render(
    <MyState/>,
    document.getElementById('root')
  );
</script>
</body>
</html>
